package me.snowdrop.istio.client;

import io.fabric8.kubernetes.client.dsl.MixedOperation;
import io.fabric8.kubernetes.client.dsl.Resource;
import me.snowdrop.istio.mixer.adapter.bypass.Bypass;
import me.snowdrop.istio.mixer.adapter.bypass.BypassList;
import me.snowdrop.istio.mixer.adapter.bypass.DoneableBypass;
import me.snowdrop.istio.mixer.adapter.circonus.Circonus;
import me.snowdrop.istio.mixer.adapter.circonus.CirconusList;
import me.snowdrop.istio.mixer.adapter.circonus.DoneableCirconus;
import me.snowdrop.istio.mixer.adapter.denier.Denier;
import me.snowdrop.istio.mixer.adapter.denier.DenierList;
import me.snowdrop.istio.mixer.adapter.denier.DoneableDenier;
import me.snowdrop.istio.mixer.adapter.fluentd.DoneableFluentd;
import me.snowdrop.istio.mixer.adapter.fluentd.Fluentd;
import me.snowdrop.istio.mixer.adapter.fluentd.FluentdList;
import me.snowdrop.istio.mixer.adapter.kubernetesenv.DoneableKubernetesenv;
import me.snowdrop.istio.mixer.adapter.kubernetesenv.Kubernetesenv;
import me.snowdrop.istio.mixer.adapter.kubernetesenv.KubernetesenvList;
import me.snowdrop.istio.mixer.adapter.memquota.DoneableMemquota;
import me.snowdrop.istio.mixer.adapter.memquota.Memquota;
import me.snowdrop.istio.mixer.adapter.memquota.MemquotaList;
import me.snowdrop.istio.mixer.adapter.opa.DoneableOpa;
import me.snowdrop.istio.mixer.adapter.opa.Opa;
import me.snowdrop.istio.mixer.adapter.opa.OpaList;
import me.snowdrop.istio.mixer.adapter.prometheus.DoneablePrometheus;
import me.snowdrop.istio.mixer.adapter.prometheus.Prometheus;
import me.snowdrop.istio.mixer.adapter.prometheus.PrometheusList;
import me.snowdrop.istio.mixer.adapter.redisquota.DoneableRedisquota;
import me.snowdrop.istio.mixer.adapter.redisquota.Redisquota;
import me.snowdrop.istio.mixer.adapter.redisquota.RedisquotaList;
import me.snowdrop.istio.mixer.adapter.solarwinds.DoneableSolarwinds;
import me.snowdrop.istio.mixer.adapter.solarwinds.Solarwinds;
import me.snowdrop.istio.mixer.adapter.solarwinds.SolarwindsList;
import me.snowdrop.istio.mixer.adapter.stackdriver.DoneableStackdriver;
import me.snowdrop.istio.mixer.adapter.stackdriver.Stackdriver;
import me.snowdrop.istio.mixer.adapter.stackdriver.StackdriverList;
import me.snowdrop.istio.mixer.adapter.statsd.DoneableStatsd;
import me.snowdrop.istio.mixer.adapter.statsd.Statsd;
import me.snowdrop.istio.mixer.adapter.statsd.StatsdList;
import me.snowdrop.istio.mixer.adapter.stdio.DoneableStdio;
import me.snowdrop.istio.mixer.adapter.stdio.Stdio;
import me.snowdrop.istio.mixer.adapter.stdio.StdioList;

public interface AdapterDsl {
  MixedOperation<Bypass,BypassList, DoneableBypass,Resource<Bypass,DoneableBypass>> bypass();
  MixedOperation<Circonus,CirconusList, DoneableCirconus,Resource<Circonus,DoneableCirconus>> circonus();
  MixedOperation<Denier,DenierList, DoneableDenier,Resource<Denier,DoneableDenier>> denier();
  MixedOperation<Fluentd,FluentdList, DoneableFluentd,Resource<Fluentd,DoneableFluentd>> fluentd();
  MixedOperation<Kubernetesenv,KubernetesenvList, DoneableKubernetesenv,Resource<Kubernetesenv,DoneableKubernetesenv>> kubernetesenv();
  MixedOperation<Memquota,MemquotaList, DoneableMemquota,Resource<Memquota,DoneableMemquota>> memquota();
  MixedOperation<Opa,OpaList, DoneableOpa,Resource<Opa,DoneableOpa>> opa();
  MixedOperation<Prometheus,PrometheusList, DoneablePrometheus,Resource<Prometheus,DoneablePrometheus>> prometheus();
  MixedOperation<Redisquota,RedisquotaList, DoneableRedisquota,Resource<Redisquota, DoneableRedisquota>> redisquota();
  MixedOperation<Solarwinds,SolarwindsList, DoneableSolarwinds,Resource<Solarwinds,DoneableSolarwinds>> solarwinds();
  MixedOperation<Stackdriver,StackdriverList, DoneableStackdriver,Resource<Stackdriver,DoneableStackdriver>> stackdriver();
  MixedOperation<Statsd,StatsdList, DoneableStatsd,Resource<Statsd,DoneableStatsd>> statsd();
  MixedOperation<Stdio,StdioList, DoneableStdio,Resource<Stdio,DoneableStdio>> stdio();
}
